package src.Aula06.Ex03;


public class Conjunto {
    private int[] numeros;

    public Conjunto() {
        this.numeros = new int[0];

    }

@Override

//toString
    public String toString() {
        String s = "";
        for (int numero : numeros) {
            if (numero == numeros[0]) {
                s += numero;
                continue;
            }
            s += " " + numero;
        }
        return s;

    }

    public int[] getNumeros() {return numeros;}
    
    public void setNumeros(int[] numeros){
        this.numeros = numeros;
    }

    public boolean contains(int n) {
        for (int numero : numeros)
            if (numero == n)
                return true;

        return false;
    }

    public void insert(int n) {
        if (contains(n))
            return;

        int[] numerosAtualizado = new int[numeros.length + 1];
        for (int i = 0; i < numeros.length; i++) {
            numerosAtualizado[i] = numeros[i];
        }
        numerosAtualizado[numerosAtualizado.length - 1] = n; 
        this.numeros = numerosAtualizado;

    }

    public void remove(int n) {
        if (!contains(n))
            return;

        int[] numerosAtualizado = new int[numeros.length - 1];
        int j = 0;
        for (int i = 0; i < numeros.length; i++) {
            if (numeros[i] == n)
                continue;
            numerosAtualizado[j] = numeros[i];
            j++;
        }
        this.numeros = numerosAtualizado;
    }

    public void empty() {
        this.numeros = new int[0];
    }

    public int size() {
        return numeros.length;
    }

    public Conjunto unir(Conjunto add) {
        Conjunto uniao = new Conjunto();
        uniao.setNumeros(numeros);

        for (int numero : add.getNumeros()) {
            uniao.insert(numero);
        }

        return uniao;
    }

    public Conjunto subtrair(Conjunto dif) {
        Conjunto diferenca = new Conjunto();
        for (int numero : numeros) {
            if (!dif.contains(numero))
                diferenca.insert(numero);
        }

        return diferenca;

    }

    public Conjunto interset(Conjunto inter) {
        Conjunto intersecao = new Conjunto();

        for (int numero : inter.getNumeros()) { 
            if (contains(numero))
                intersecao.insert(numero); 
        }
        return intersecao;
    }

}